package br.com.utfpr.persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class ConsultaMunicipios extends Conexao {
	
	/**
	 * Consulta quantidade de municipio pelo códido do estado.
	 * 
	 * @param uf
	 * @return
	 */
	public int quantidadeMunicipios (int codigoUf) {
		int quantidade = 0;
		Connection con = abreConexao();
		
		try {
			
			String sql = "SELECT count(*) FROM municipios WHERE uf = ? ;";
			
			PreparedStatement ps = con.prepareStatement(sql);
			
			ps.setInt(1, codigoUf);
			
			ResultSet res = ps.executeQuery();
			
			if (res != null) {
				while (res.next())	{
					quantidade = res.getInt(1);
				}
			}
		} catch (SQLException e) {
			System.out.println("### ERRO AO CONSULTAR O ESTADO. ###");
			e.printStackTrace();
		} finally {
			fechaConexao(con);
		}
		
		return quantidade;
	}
	
	/**
	 * Consulta nome do município pelo codigo do IBGE.
	 * 
	 * @param int codigo Ibge.
	 * @return String - nome do municipio.
	 */
	public String consultarNomeMunicipio (int codigoIbge) {
		String nome = null;
		Connection con = abreConexao();
		
		try {
			
			String sql = "SELECT nome FROM municipios WHERE ibge = ? ;";
			
			PreparedStatement ps = con.prepareStatement(sql);
			
			ps.setInt(1, codigoIbge);
			
			ResultSet res = ps.executeQuery();
			
			if (res != null) {
				while (res.next())	{
					nome = res.getString("nome");
				}
			}
		} catch (SQLException e) {
			System.out.println("### ERRO AO CONSULTAR NOME DO MUNICIPIO. ###");
			e.printStackTrace();
		} finally {
			fechaConexao(con);
		}
		
		return nome;
	}
	
	/**
	 * Consulta código do IBGE do município pelo código do estado e nome do município.
	 * 
	 * @param código uf
	 * @param nome município
	 * @return int - código IBGE.
	 */
	public int consultarCodigoIbge (int uf, String nome) {
		int codigoIbge = 0;
		Connection con = abreConexao();
		
		try {
			
			String sql = "SELECT ibge FROM municipios WHERE uf = ? and UPPER(nome) = UPPER(?) ;";
			
			PreparedStatement ps = con.prepareStatement(sql);
			
			ps.setInt(1, uf);
			ps.setString(2, nome);
			
			ResultSet res = ps.executeQuery();
			
			if (res != null) {
				while (res.next())	{
					codigoIbge = res.getInt("ibge");
				}
			}
		} catch (SQLException e) {
			System.out.println("### ERRO AO CONSULTAR COD IBGE DO MUNICIPIO. ###");
			e.printStackTrace();
		} finally {
			fechaConexao(con);
		}
		
		return codigoIbge;
	}

}
